Information on Using SICL and VISA in the Same Application
Agilent Technologies' implementation of VISA uses SICL internally to do
instrument I/O. While Agilent Technologies does not officially
support the use of both SICL and VISA in a single application,
you may be able to use SICL and VISA together successfully if you avoid
certain problem areas listed below:
- Do not use both VISA and SICL to talk to the same device:
- If VISA and SICL are used to talk to the same device, VISA can lose track of the state
of the device and communications errors may occur.
- Do not mix SICL ilock() and VISA viLock() calls on the same device and do not ilock() an
interface used by VISA:
- If a user calls VISA's viLock() to lock a device, that device can still be accessed via
SICL sessions.
- If a user calls SICL's ilock() and then VISA's viLock() on the same device, the viLock()
call will succeed, but subsequent VISA calls to that device may return a
VI_ERROR_SYSTEM_ERROR.
- Do not intermix iwaithdlr() and viEnableEvent() calls:
- Calling iwaithdlr() in one thread and viEnableEvent() in another can cause loss of
interrupts. This is because the viEnableEvent() code needs to have SICL interrupts
disabled for a critical_section of code. iwaithdlr() will re-enable them and
potentially cause a lost interrupts.
- Note also, that the SICL iwaithdlr() call will terminate when a VISA interrupt occurs.
- Do not close the last VISA resource manager session until all open SICL sessions have
been closed. (This is only a problem on Windows 95 / 98.)
- VISA, when closing the last Default Resource Manager session, will call _siclcleanup()
which closes all open SICL sessions, whether or not they were opened via VISA or directly
from SICL. Any open SICL sessions will be invalid after the _siclcleanup() call.
⌐ Copyright 1995-2000 Agilent Technologies. All Rights Reserved.